From: Matthias Clasen Date: Fri, 20 Oct 2023 00:56:59 +0000 (-0400) Subject: glcontext: Add api to check for vertex arrays X-Git-Tag: archive/raspbian/4.12.4+ds-3+rpi1^2~21^2^2~27^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=f725e3f992b060ad767fd0bcf9543bab53daa471;p=gtk4.git glcontext: Add api to check for vertex arrays Vertex arrays are available in GL and in GLES >= 3. We don't check for the GLES extension that provided vertex arrays in older GLES, since that requires using different API. This api avoids version checks all over the place. --- diff --git a/gdk/gdkglcontext.c b/gdk/gdkglcontext.c index 3368310f9d..1a1cb324ea 100644 --- a/gdk/gdkglcontext.c +++ b/gdk/gdkglcontext.c @@ -1817,6 +1817,7 @@ gdk_gl_context_has_sync (GdkGLContext *self) return priv->has_sync; } +/* Return if GL_BGRA works with glTexImage2D */ gboolean gdk_gl_context_has_bgra (GdkGLContext *self) { @@ -1825,6 +1826,27 @@ gdk_gl_context_has_bgra (GdkGLContext *self) return priv->has_bgra; } +/* Return if glGenVertexArrays, glBindVertexArray and glDeleteVertexArrays + * can be used + */ +gboolean +gdk_gl_context_has_vertex_arrays (GdkGLContext *self) +{ + GdkGLContextPrivate *priv = gdk_gl_context_get_instance_private (self); + + switch (priv->api) + { + case GDK_GL_API_GL: + return TRUE; + + case GDK_GL_API_GLES: + return gdk_gl_version_get_major (&priv->gl_version) >= 3; + + default: + g_return_val_if_reached (FALSE); + } +} + /* This is currently private! */ /* When using GL/ES, don't flip the 'R' and 'B' bits on Windows/ANGLE for glReadPixels() */ gboolean diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h index f026eaf081..c047370ca6 100644 --- a/gdk/gdkglcontextprivate.h +++ b/gdk/gdkglcontextprivate.h @@ -157,6 +157,8 @@ gboolean gdk_gl_context_has_sync (GdkGLContext gboolean gdk_gl_context_has_bgra (GdkGLContext *self) G_GNUC_PURE; +gboolean gdk_gl_context_has_vertex_arrays (GdkGLContext *self) G_GNUC_PURE; + double gdk_gl_context_get_scale (GdkGLContext *self); G_END_DECLS